Report errors about integer parsing back up. (#452988)
authorMatthias Clasen <mclasen@redhat.com>
Tue, 3 Jul 2007 17:22:24 +0000 (17:22 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Tue, 3 Jul 2007 17:22:24 +0000 (17:22 +0000)
2007-07-03  Matthias Clasen  <mclasen@redhat.com>

        * gtk/gtkcelllayout.c (attributes_text_element): Report
        errors about integer parsing back up.  (#452988)

        * tests/buildertest.c: Add an extra check.

svn path=/trunk/; revision=18364

ChangeLog
gtk/gtkcelllayout.c
tests/buildertest.c

index d28db1f463e4775ffc87474b679dde3701e40177..71305a38e1b8d59d3dc0e16c6613e2b8e71f874f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2007-07-03  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkcelllayout.c (attributes_text_element): Report
+       errors about integer parsing back up.  (#452988)
+
+       * tests/buildertest.c: Add an extra check.
+
 2007-07-03  Matthias Clasen  <mclasen@redhat.com>
 
        * gtk/gtkbutton.c (gtk_button_construct_child): Don't leave
index 9fba57bf0f689ebd802cdb59f9cf7d3691dba5b2..7ec93569459e3038cece9fd3e1e6d04826098eff 100644 (file)
  * Boston, MA 02111-1307, USA.
  */
 
+#include <config.h>
 #include <string.h>
 #include <stdlib.h>
-#include <config.h>
+#include <errno.h>
 #include "gtkcelllayout.h"
 #include "gtkintl.h"
 #include "gtkalias.h"
@@ -346,12 +347,27 @@ attributes_text_element (GMarkupParseContext *context,
                         GError             **error)
 {
   AttributesSubParserData *parser_data = (AttributesSubParserData*)user_data;
+  glong l;
+  gchar *endptr;
 
   if (!parser_data->attr_name)
     return;
+
+  errno = 0;
+  l = strtol (text, &endptr, 0);
+  if (errno || endptr == text)
+    {
+      g_set_error (error, 
+                   GTK_BUILDER_ERROR,
+                   GTK_BUILDER_ERROR_INVALID_VALUE,
+                   "Could not parse integer `%s'",
+                   text);
+      return;
+    }
+
   gtk_cell_layout_add_attribute (parser_data->cell_layout,
                                 parser_data->renderer,
-                                parser_data->attr_name, atoi (text));
+                                parser_data->attr_name, l);
   g_free (parser_data->attr_name);
   parser_data->attr_name = NULL;
 }
index 86e4d9fe46bb695972f19314977e0fee0e72dc31..a402d876777c044f60452a5e4215a1c4268497f8 100644 (file)
@@ -1038,6 +1038,7 @@ gboolean test_treeview_column (void)
   g_return_val_if_fail (treeview, FALSE);
   g_return_val_if_fail (GTK_IS_TREE_VIEW (treeview), FALSE);
   column = gtk_tree_view_get_column (GTK_TREE_VIEW (treeview), 0);
+  g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (column), FALSE);
   g_return_val_if_fail (strcmp (gtk_tree_view_column_get_title (column),
                                "Test") == 0, FALSE);